#region using statements

using System;
using System.Text;

#endregion

namespace NGen.Managers.Logging
{
	public interface ILogger
	{
		/// <summary>
		/// 	the logging level of this logger, any messages specified above this logging
		/// 	level will not be logged
		/// </summary>
		LoggingLevel CurrentLogLevel { get; set; }

		/// <summary>
		/// 	text which is writtin before each log message
		/// </summary>
		String PrefixText { get; set; }

		/// <summary>
		/// 	text which is written after each log message
		/// </summary>
		String PostfixText { get; set; }

		/// <summary>
		/// 	should the timestamp be prefixed to log messages
		/// </summary>
		bool PrefixTimestamp { get; set; }

		/// <summary>
		/// 	should messages be logged to both the main log and the individual logger
		/// </summary>
		bool AlsoWriteToMainLog { get; set; }

		/// <summary>
		/// 	Writes a string to the log file, XNAGameEngineLog.txt
		/// </summary>
		/// <param name = "p_message">string to write</param>
		/// <param name = "p_level">the logging level to use</param>
		void Write(string p_message, LoggingLevel p_level = LoggingLevel.MINIMAL);

		/// <summary>
		/// 	clears the logfile
		/// </summary>
		void ClearLog();

		/// <summary>
		/// 	close the logfile
		/// </summary>
		void Close();

		/// <summary>
		/// 	<para>convenience access to the stringbuilder. the stringbuilder is cleared each time this call is made</para>
		/// 	<para>USAGE: Logger.BuildString("Sample").Append(" String").toString()</para>
		/// </summary>
		/// <param name = "p_string">string to append</param>
		/// <returns>stringbuilder object with the passed in string</returns>
		StringBuilder BuildString(string p_string);
	}
}